#ifndef CX_CPP_CONTROL_H
#define CX_CPP_CONTROL_H
#ifndef IN_EMBEDDED_ENV
#endif
#include "cx_cpp_debug.h"
namespace CX{
typedef float ControllerDate_TypeDef;
class Controller
{
private:
    /* data */
public:
    Controller();
    ~Controller();
    virtual ControllerDate_TypeDef conductor(ControllerDate_TypeDef input)
    {
        Debug()<<"No controller specified\n";
        return input;
    }
};

typedef float pid_param_TypeDef;
class PID_Controller : public Controller
{
private:
    pid_param_TypeDef ki,kp,kd;
    pid_param_TypeDef integrate_max;
    float Ts;
public:
    PID_Controller(/* args */);
    ~PID_Controller();
    virtual ControllerDate_TypeDef  conductor(ControllerDate_TypeDef input) override
    {
        Debug()<<"PID Controller\n";
        return input;
    }
    pid_param_TypeDef get_ki(void)
    {
        return ki;
    }
    pid_param_TypeDef get_kp(void)
    {
        return kp;
    }
    pid_param_TypeDef get_kd(void)
    {
        return kd;
    }
};
}
#endif